/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.itschapala.dsw2.biblioteca8a.bl;

import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.itschapala.dsw2.biblioteca8a.dao.LibroDaoLocal;
import mx.itschapala.dsw2.biblioteca8a.enumeracion.EstadoDetallePrestamo;
import mx.itschapala.dsw2.biblioteca8a.enumeracion.EstadoServicio;
import mx.itschapala.dsw2.biblioteca8a.modelo.Libro;

/**
 *
 * @author RaygozaL
 */
@Stateless
public class LibroBl implements LibroBlLocal {

    @EJB
    private LibroDaoLocal LibroDao;

   
    @Override
    public EstadoServicio register(Libro book) {
        if(LibroDao.findDuplicity(book)){
            return EstadoServicio.INCOMPLETE;
    //nada
    }else{
       LibroDao.create(book);
       return  EstadoServicio.COMPLETE;
        }
    }

   
    
    @Override
    public EstadoServicio modify(Libro book) {
        if(book.getClave()==null||LibroDao.find(book.getClave())==null){
            return EstadoServicio.INCOMPLETE;
    //nada
    }else{
       LibroDao.edit(book);
       return  EstadoServicio.COMPLETE;
        }
    }

   
    @Override
    public EstadoServicio delete(Libro book) {
        if(book.getClave()==null||LibroDao.find(book.getClave())==null){
            return EstadoServicio.INCOMPLETE;
        }else{
        LibroDao.remove(book);
        return EstadoServicio.COMPLETE;
        }
        
        
        
    }

   

    @Override
    public List <Libro> getAll() {
        return LibroDao.findAll();
    }


    @Override
 public Libro findById(Integer clave) {
        return LibroDao.find(clave);
    }

    @Override
    public Libro findByClaveForLend(String clave) {
        Libro lbusqueda=new Libro();
        lbusqueda.setClave(clave);
        Libro l=LibroDao.findByClave(lbusqueda);
        if(l!=null&&l.getEstado().equals(EstadoDetallePrestamo.RETURN.name())){
        return  l;
        }
         return null;
        
    }

 
 
 
}
